/**
 * 查询业务逻辑处理接口类
 * @author 郑翎
 * 2015-10-1 11:07:43
 */
package com.cbts.service.info;

import java.util.ArrayList;
import java.util.List;

import com.cbts.entity.ApplayReim;
import com.cbts.entity.BusinessTravelList;
import com.cbts.entity.CorporationMonthReport;
import com.cbts.entity.CorporationQuarterReport;
import com.cbts.entity.DepartmentMonthReport;
import com.cbts.entity.DepartmentQuarterReport;
import com.cbts.entity.ExchangeRecord;
import com.cbts.entity.UserInfo;
import com.cbts.util.Page;


public interface SelectService {

	/**
	 * 查询员工信息，传入查询条件,flag=0时查询公司全部的员工
	 * @param departmentid 部门id
	 * @param userid	员工id
	 * @param flag flag=1查询某部门的全部员工，flag=2按工号查询员工信息,flag=3查询某部门下的某员工信息
	 * @param page 当前页数
	 * @return Page<UserInfo>
	 */
	public Page<UserInfo> getuseInfos(String departmentid,String userid,int flag,int page);
	
	/**
	 * 查询报销记录，传入查询条件,conditions.length=0查询全部的报销记录
	 * @param conditions conditions[0]是日期，conditions[1]是部门号
	 * conditions[2]工号,conditions[3]是审核状态
	 * conditions=null查询全部的报销记录，conditions[0]=""查询全部日期，部门号和工号同理
	 * @param page 当前页数
	 * @return List<ApplayReim>
	 */
	public Page<ApplayReim> getApplayReims(String[] conditions,int page);
	
	/**
	 * 查询出差信息列表，传入查询条件,conditions.length=0查询全部的出差记录
	 * @param conditions conditions[0]是日期，conditions[1]是部门号
	 * conditions[2]工号,,conditions[3]是审核状态
	 * conditions=null查询全部的出差记录，conditions[0]=""查询全部日期，部门号和工号同理
	 * @param page 当前页数
	 * @return Page<BusinessTravelList>
	 */
	public Page<BusinessTravelList> getbBusinessTravels(String[] conditions,int page);

	/**
	 * 查询点数兑换记录，传入查询条件，conditions[0]是日期，conditions[1]是部门号
	 * conditions[2]工号,,conditions[3]是领取状态("0"是否，"1"是是)
	 * conditions=null查询全部的兑换记录，conditions[0]=""查询全部日期，部门号和工号同理
	 * @param conditions
	 * @return List<ExchangeRecord>
	 */
	public Page<ExchangeRecord> getExchangeRecords(String[] conditions,int page);
	
	/**
	 * 获得部门id为deid的部门的该year的月报
	 * @param deid	部门id，deid为""时查找全部部门
	 * @param year	年份 ,year为null查询该部门的所有月报
	 * @param page 当前页数
	 * @return
	 */
	public Page<DepartmentMonthReport> getDeMonthReport(String deid,String year,int page);
	
	/**
	 * 获得部门id为deid的部门的该year的季报
	 * @param deid	部门id,deid为""时查找全部部门
	 * @param year	年份,year为null查询该部门的所有季报
	 * @param page 当前页数
	 * @return
	 */
	public Page<DepartmentQuarterReport> getDeQuarterReport(String deid,String year,int page);
	
	/**
	 * 获得公司该year的月报
	 * @param year
	 * @return
	 * @param page 当前页数
	 */
	public Page<CorporationMonthReport> getCoMonthReport(String year,int page);
	
	/**
	 * 获得公司该year的季报
	 * @param year
	 * @page page 当前页数
	 * @return
	 */
	public Page<CorporationQuarterReport> getCoQuarterReport(String year,int page);
	
	/**
	 * 
	 * @param type 报表的类型,0-月报,1-季报
	 * @param deid null是公司，""是全部的部门，deid是部门id
	 * @return
	 */
	public List<String> getYear(int type,String deid);
	
	/**
	 * 从数据库获得全部部门月报,返回List
	 * @page page 当前页数
	 */
	public Page<DepartmentMonthReport> finadAllDepMon(int page) ;
	/**
	 * 从数据库获得全部部门季报,返回List
	 * @page page 当前页数
	 */
	public Page<DepartmentQuarterReport> finadAllDepQua(int page) ;
	/**
	 * 从数据库获得全部公司月报,返回List
	 * @page page 当前页数
	 */
	public Page<CorporationMonthReport> finadAllCorMon(int page) ;
	/**
	 * 从数据库获得全部公司季报,返回List
	 * @page page 当前页数
	 */
	public Page<CorporationQuarterReport> finadAllCorQua(int page) ;
	
	/**
	 * 获得每个部门的节省费用表
	 * @param year
	 * @return map<部门名,saveAmountList>
	 */
}
